package thread;

/**
 * @author HuangJin
 * @version 1.0
 * describe:线程的优先级
 *线程有10个优先级,使用整数1-10表示
 *   其中1表示最小优先级,10为最高优先级.5为默认值
 *
 *   当一个线程调用start方法后就纳入到了操作系统的线程调度器中被统一管理了.调度器会尽可能均匀分配时间片给
 *   每个线程执行.线程不能主动索取时间片.
 *   调整线程的优先级可以最大程度的干涉调度器分配时间片的概率.
 *   优先级越高的线程获取时间片的次数越多.
 * @date 2023/3/14 15:49
 */
public class PriorityDemo {
    public static void main(String[] args) {
        Thread min = new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 10000; i++) {
                    System.out.println("min");
                }
            }
        };
        Thread max = new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 10000; i++) {
                    System.out.println("max");
                }
            }
        };
        Thread norm = new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 10000; i++) {
                    System.out.println("norm");
                }
            }
        };
        /*
            线程提供了三个常量:
            final static int MIN_PRIORITY = 1       表示线程可以允许的最小优先级
            final static int NORM_PRIORITY = 5      表示线程创建时默认的优先级
            final static int MAX_PRIORITY = 10      表示线程可以允许的最大优先级
         */
        min.setPriority(Thread.MIN_PRIORITY);
        max.setPriority(Thread.MAX_PRIORITY);
        min.start();
        norm.start();
        max.start();

    }
}
